#ifndef DW_BASE_POOL_H
#	define DW_BASE_POOL_H

namespace dw {
	namespace base {

template< typename T, uint32 Size >
class Pool
{
public :
	 typedef T ElementType;

public : //! @name Construction & destruction
	//! @{
	Pool();
	//! @}

	inline T& operator [] (uint32);

public : //! @name Commands
	//! @{
	inline dw::uint32 insert(const T&);
	inline void remove(uint32);
	inline virtual void flush();
	//! @}

private : //! @name Data
	//! @{
	ElementType* m_pool;
	dw::uint32 m_size;
	std::stack< uint32 > m_stack;
	//! @}
};
	} // namespace base
} // namespace dw

# include "base/pool.inl"

#endif // !DW_BASE_POOL_H
